<?php

if (!defined('BASEPATH'))
    exit('No direct script access allowed');

class ingresosreserva extends CI_Controller {

    public function __construct() {
        parent::__construct();
        session_start();
        $this->estaLogueado();
        $this->esAdministrador();
        $this->load->model('reservam');
        $this->load->model('ingreso_reservam');
        $this->load->model('tarifa_x_diam');
        $this->load->model('venta_producto_serviciom');
        $this->load->model('ajustem');
        $this->load->model('habitacionesm');
        $this->load->model('usuariosm');
        $this->load->model('paism');

        $this->establecimiento = $_SESSION["establecimiento"]["id_establecimiento"];
    }

    public function index() {
        $data = array();
        $this->loadData($data);
        $this->load->view('header', $data);
        $this->load->view('ingresosreservaV');
        $this->load->view('footer');
    }

    private function loadData(&$data) {
        if (!empty($_GET["desde"])) {
            $this->formatoFechaBD($_GET["desde"]);
        }
        if (!empty($_GET["hasta"])) {
            $this->formatoFechaBD($_GET["hasta"]);
        }
        $data["tab"] = "ingresosreserva";
        $data["moneda"] = $_SESSION["establecimiento"]["moneda"];
        $filasPorPagina = 20;
        if (empty($_GET["page"])) {
            $inicio = 0;
            $paginaActual = 1;
        } else {
            $inicio = ($_GET["page"] - 1) * $filasPorPagina;
            $paginaActual = $_GET["page"];
        }
        $data['paginaActiva'] = $paginaActual;

        $cantidadReservas = $this->reservam->cantidadReservas($this->establecimiento, $_GET);
        $cantidadReservas = $cantidadReservas[0]->cantidad;
        $data['cantidadReservas'] = $cantidadReservas;
        $data['cantidadPaginas'] = ceil($cantidadReservas / $filasPorPagina);
        $data["reservas"] = $this->reservam->reservas($this->establecimiento, $filasPorPagina, $inicio, $_GET);
        foreach ($data["reservas"] as $row) {
            $row->noches = $this->diferenciaFechas($row->fecha_ingreso, $row->fecha_salida);
            $this->formatoFechaVista($row->fecha_ingreso);
           $row->nacionalidad  = $this->paism->obtenerNombre($row->id_pais);


            $idReserva = $row->id_reserva;
            $ingresos = $this->ingreso_reservam->obtenerIngresos($idReserva);
            $costoHospedajeSinImp = $this->tarifa_x_diam->obtenerCostosHospedaje($idReserva);
            $totalConsumos = $this->venta_producto_serviciom->obtenerTotalConsumos($idReserva);
            $totalImpuestosConsumo = $this->venta_producto_serviciom->obtenerTotalImpuestosConsumos($idReserva);
            $ajustes = $this->ajustem->obtenerAjustes($idReserva);
            $row->ajustes = number_format($ajustes[0]->totalAjuste, 2, ".", ",");
            $row->consumos = number_format($totalConsumos[0]->totalConsumos, 2, ".", ",");
            $row->impuestos = number_format($totalImpuestosConsumo[0]->totalImpuestosConsumo + $row->impuesto, 2, ".", ",");
            $row->alojamientoSinImp = number_format($costoHospedajeSinImp[0]->totalHospedaje, 2, ".", ",");
            $row->total = $costoHospedajeSinImp[0]->totalHospedaje + $ajustes[0]->totalAjuste + $totalConsumos[0]->totalConsumos + $totalImpuestosConsumo[0]->totalImpuestosConsumo + $row->impuesto;
            $row->pendiente = $row->total - $ingresos[0]->totalIngreso;
            $row->pendiente = number_format($row->pendiente, 2, ".", ",");
            $row->total = number_format($row->total, 2, ".", ",");
        }
        $data['cuartos'] = $this->habitacionesm->getAllCuartos($this->establecimiento);
        $data["usuarios"] = $this->usuariosm->getListaUsuarios($this->establecimiento);
        if (!empty($_GET["desde"])) {
            $this->formatoFechaVista($_GET["desde"]);
        }
        if (!empty($_GET["hasta"])) {
            $this->formatoFechaVista($_GET["hasta"]);
        }
    }

    private function diferenciaFechas($desde, $hasta) {
        $datetime1 = date_create($desde);
        $datetime2 = date_create($hasta);
        $intervalo = date_diff($datetime1, $datetime2);
        return $intervalo->days;
    }

}

